package com.hlkj.pay.infrastructure.model.merchant;

import javax.validation.constraints.NotNull;

import com.baomidou.mybatisplus.annotation.TableName;
import com.hlkj.framework.mybatis.core.dataobject.BaseDO;
import com.hlkj.pay.enums.MerchantEnum;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
* 汇电通报备表
* @TableName t_merchant_report_info
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("t_merchant_report_info")
public class MerchantReportInfoDO extends BaseDO {
    /**
    * 商户商户号
    */
    @Schema(description = "商户商户号")
    private String sn;
    /**
    * 商户类型，1=个人，2=企业
     * @see MerchantEnum.MERCHANT_TYPE
    */
    @Schema(description = "商户类型，1=个人，2=企业")
    private Integer type;
    /**
    * 商户名称
    */
    @Schema(description = "商户名称")
    private String name;
    /**
    * 商户简称
    */
    @Schema(description = "商户简称")
    private String shortName;
    /**
    * 控制人类型 是否同法人 1 是 0 否
    */
    @Schema(description = "控制人类型 是否同法人 1 是 0 否")
    private Integer controllerType;
    /**
    * 联系人类型 是否同法人 1 是 0 否
    */
    @Schema(description = "联系人类型 是否同法人 1 是 0 否")
    private Integer contactType;
    /**
    * 企业类型
    */
    @Schema(description = "企业类型")
    private String companyType;
    /**
    * 商户类别 1 商户 2 代理商户
    */
    @Schema(description = "商户类别 1 商户 2 代理商户")
    private Integer snType;
    /**
    * 所属平台，1=运营平台，2=机构，3=商户
    */
    @NotNull(message="[所属平台，1=运营平台，2=机构，3=商户]不能为空")
    @Schema(description = "所属平台，1=运营平台，2=机构，3=商户")
    private Integer sysType;
    /**
    * 服务商编码
    */
    @Schema(description = "服务商编码")
    private String providerCode;
    /**
    * 通道编码
    */
    @Schema(description = "通道编码")
    private String channelCode;
    /**
     * @see MerchantEnum.REPORT_STATUS
    * 审核状态，0：草稿 1：鉴权中 2：已提交，等待平台审核，3：系统自动审核中，4：系统审核通过渠道审核中，5：平台审核中，6：待签约，7：签约中，8：待配置，9：配置中，10：审核完成，11：审核驳回
    */
    @Schema(description = "审核状态，0：草稿 1：鉴权中 2：已提交，等待平台审核，3：系统自动审核中，4：系统审核通过渠道审核中，5：平台审核中，6：待签约，7：签约中，8：待配置，9：配置中，10：审核完成，11：审核驳回")
    private Integer status;
    /**
    * 上一个审核状态，0：草稿 1：鉴权中 2：已提交，等待平台审核，3：系统自动审核中，4：系统审核通过渠道审核中，5：平台审核中，6：待签约，7：签约中，8：待配置，9：配置中，10：审核完成，11：审核驳回
    */
    @Schema(description = "上一个审核状态，0：草稿 1：鉴权中 2：已提交，等待平台审核，3：系统自动审核中，4：系统审核通过渠道审核中，5：平台审核中，6：待签约，7：签约中，8：待配置，9：配置中，10：审核完成，11：审核驳回")
    private Integer lastStatus;
    /**
    * 渠道单号
    */
    @Schema(description = "渠道单号")
    private String applyNo;
    /**
    * 渠道侧商户号
    */
    @Schema(description = "渠道侧商户号")
    private String subMchId;
    /**
    * 文件签署链接
    */
    @Schema(description = "文件签署链接")
    private String signLink;
    /**
    * 渠道拓展参数A
    */
    @Schema(description = "渠道拓展参数A")
    private String extendA;
    /**
    * 渠道拓展参数B
    */
    @Schema(description = "虚拟账号")
    private String virtualAccountNo;
    @Schema(description = "默认绑卡id")
    private String bankCardId;
    @Schema(description = "银行名称")
    private String bankName;
    /**
    * 第三方状态
     * @see MerchantEnum.REPORT_CHANNEL_CONFIG_STATUS
    */
    @Schema(description = "第三方状态 ")
    private Integer auditStatus;
    /**
    * @see MerchantEnum.REPORT_BANK_STATUS
    */
    @Schema(description = "银行报备状态 1=待开户，2=待开户意愿确认，3=正常，4=开户成功，5=处理中，，0=失败")
    private Integer bankStatus;
    /**
    * 备注
    */
    @Schema(description = "备注")
    private String message;
    /**
    * 请求id
    */
    @Schema(description = "请求id")
    private String requestId;
    /**
    * 请求id
    */
    @Schema(description = "商户请求id")
    private String mchRequestId;
    /**
    * 用户id
    */
    @Schema(description = "用户id")
    private String userId;


}
